/*
 * @Descripttion:
 * @version: 1.0.0
 * @Author: lai_hq@qq.com
 * @Date: 2022-07-30 11:48:40
 * @LastEditors: lai_hq@qq.com
 * @LastEditTime: 2022-08-05 10:28:36
 */
import { defineConfig } from 'vite'

import vue from '@vitejs/plugin-vue'
import { resolve } from 'path'

/* eslint import/no-unresolved: 0 */
import AutoImport from 'unplugin-auto-import/vite'

import Components from 'unplugin-vue-components/vite'

import { AntDesignVueResolver } from 'unplugin-vue-components/resolvers'

import vueJsx from '@vitejs/plugin-vue-jsx'

// https://vitejs.dev/config/
export default defineConfig({
    resolve: {
        extensions: ['.js', '.ts', '.jsx', '.tsx', '.json', '.vue', '.less'],
        alias: {
            '@': resolve(__dirname, 'src')
        }
    },
    server: {
        port: 4000,
        open: true,
        cors: true
        // proxy: {
        //   '/api': {
        //     target: 'http://xxx.xxx.xxx.xxx:8000',
        //     changeOrigin: true,
        //     secure: false,
        //     rewrite: (path) => path.replace('/api/', '/')
        //   }
        // }
    },
    css: {
        preprocessorOptions: {
            less: {
                modifyVars: {
                    'primary-color': '#00B781', // 全局主色
                    'link-color': '#00B781', // 链接色
                    'success-color': '#00B781', // 成功色
                    'warning-color': '#faad14', // 警告色
                    'error-color': '#f5222d', // 错误色
                    'font-size-base': '14px', // 主字号
                    'heading-color': 'rgba(0, 0, 0, 0.85)', // 标题色
                    'text-color': '#000000D9', // 主文本色
                    'text-color-secondary': 'rgba(0, 0, 0, 0.45)', // 次文本色
                    'disabled-color': 'rgba(0, 0, 0, 0.25)', // 失效色
                    'suggestive-color': '#00000073', // 提示性文字
                    'border-radius-base': '4px', // 组件/浮层圆角
                    'border-color-base': '#d9d9d9', // 边框色
                    'box-shadow-base': '0 2px 8px rgba(0, 0, 0, 0.15)', // 浮层阴影.
                    'body-background': '#ffffff', // 白色
                    'gray-background': '#F6F6F6', // 灰色背景
                    'acitve-background': '#00B78114', // 选中颜色
                    'picker-basic-cell-hover-with-range-color': '#dff7ec'
                },
                javascriptEnabled: true
            }
        }
    },
    plugins: [
        AutoImport({
            imports: ['vue', 'vue-router'], // 自动导入vue和vue-router相关函数
            dts: 'src/auto-import.d.ts' // 生成 `auto-import.d.ts` 全局声明
        }),
        Components({
            dirs: ['src/components'], // 要导入组件的目录的路径
            deep: true, // 搜索子目录
            // 组件名称包含目录，防止同名组件冲突
            directoryAsNamespace: true,
            dts: 'src/components/components.d.ts', // 生成 `components.d.ts` 全局声明

            resolvers: [
                // 如自动引入ant
                AntDesignVueResolver({
                    importStyle: 'less',
                    resolveIcons: true
                })
            ]
        }),

        vue(),
        vueJsx()
    ],
    build: {
        minify: 'terser',
        chunkSizeWarningLimit: 1500,
        rollupOptions: {
            output: {
                manualChunks(id) {
                    if (id.includes('node_modules')) {
                        return id.toString().split('node_modules/')[1].split('/')[0].toString()
                    }
                    return ''
                }
            }
        },
        terserOptions: {
            compress: {
                drop_console: true,
                drop_debugger: true,
                pure_funcs: ['console.log']
            }
        }
    }
})
